home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 041-050 / amok48 / module / txt / dynstr.mod < prev    next >
Text File  |  1993-11-04  |  2KB  |  73 lines

  1. (**********************************************************************
  2.  
  3. :Program.    DynStr.mod
  4. :Contens.    Ein Bibliotheksmodul für dynamische Strings.
  5. :Author.     Bernd Braun
  6. :Address.    Lippestr. 11, D-3300 Braunschweig
  7. :Phone.      0531/845498
  8. :Copyright.  Public Domain
  9. :Language.   Modula-2
  10. :Translator. M2Amiga A+L V3.32d
  11. :History.    V1.0 3.Okt.1990 Erste lauffähige Version
  12.  
  13. ***********************************************************************)
  14.  
  15. IMPLEMENTATION MODULE DynStr;
  16.  
  17. (* $R- $S- $F- $V- *)
  18.  
  19.    FROM Arts IMPORT
  20.       Assert;
  21.    FROM ASCII IMPORT
  22.       nul;
  23.    FROM Exec IMPORT
  24.       CopyMem;
  25.    FROM Storage IMPORT
  26.       ALLOCATE, DEALLOCATE;
  27.    FROM Str IMPORT
  28.       Length, Copy, Compare;
  29.    FROM SYSTEM IMPORT
  30.       ADR;
  31.  
  32.    CONST
  33.       errmsg = 'DynStr: DynString ist NIL!';
  34.  
  35.    (* Erzeugt aus StatString einen DynString und reserviert für ihn
  36.       Speicher. *)
  37.    PROCEDURE MakeDynString ( VAR StatString : ARRAY OF CHAR;
  38.                              VAR S          : DynString     );
  39.       VAR
  40.          AnzahlBytes, i : INTEGER;
  41.    BEGIN
  42.       AnzahlBytes := Length ( StatString );
  43.       ALLOCATE ( S, AnzahlBytes + 1 );
  44.       CopyMem ( ADR ( StatString ), S, AnzahlBytes );
  45.       S ^ [ AnzahlBytes ] := nul;
  46.    END MakeDynString;
  47.  
  48.    (* Copiert einen DynString in einen StatString. *)
  49.    PROCEDURE MakeStatString ( VAR StatString : ARRAY OF CHAR;
  50.                                   S          : DynString     );
  51.    BEGIN
  52.       Assert ( S # NIL, ADR ( errmsg ) );
  53.       Copy ( StatString, S ^ );
  54.    END MakeStatString;
  55.  
  56.    (* Löscht einen Dynstring. *)
  57.    PROCEDURE ForgetDynString ( VAR S : DynString );
  58.    BEGIN
  59.       Assert ( S # NIL, ADR ( errmsg ) );
  60.       DEALLOCATE ( S, Length ( S ^ ) + 1 );
  61.       S := NIL;
  62.    END ForgetDynString;
  63.  
  64.    (* Vergleicht zwei DynStrings. *)
  65.    PROCEDURE DynStringCompare ( S1, S2 : DynString ) : INTEGER;
  66.    BEGIN
  67.       Assert ( S1 # NIL, ADR ( errmsg ) );
  68.       Assert ( S2 # NIL, ADR ( errmsg ) );
  69.       RETURN Compare ( S1 ^, S2 ^ );
  70.    END DynStringCompare;
  71.  
  72. END DynStr.
  73.